package com.yuanli.modules.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yuanli.modules.system.entity.SysUser;
import com.yuanli.modules.system.vo.SysUserDepVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import com.baomidou.mybatisplus.core.conditions.Wrapper;

/**
 * <p>
 *     用户 Mapper 接口
 * </p>
 * @Author wxy
 *
 * */
public interface SysUserMapper extends BaseMapper<SysUser> {
    /**
     * 通过用户账号查询用户信息
     * @param username
     * @return
     */
    public SysUser getUserByName(@Param("username") String username);
    /**
     * 通过用户OpenId查询用户信息
     * @param openId
     * @return
     */
    public SysUser queryByOpenId(@Param("openId") String openId);
    /**
     * 根据手机号查询用户信息
     * @param phone
     * @return
     */
    public SysUser getUserByPhone(@Param("phone") String phone);
    /**
     *  根据用户Ids,查询用户所属部门名称信息
     * @param userIds
     * @return
     */
    List<SysUserDepVo> getDepNamesByUserIds(@Param("userIds")List<String> userIds);

    /**
     * 查询被逻辑删除的用户
     * @param wrapper
     * @return List<SysUser>
     */
    List<SysUser> selectLogicDeleted(@Param(Constants.WRAPPER) Wrapper<SysUser> wrapper);

    /**
     * 还原被逻辑删除的用户
     * @param userIds 用户id
     * @param entity
     * @return int
     */
    int revertLogicDeleted(@Param("userIds") String userIds, @Param("entity") SysUser entity);


    /**
     * 彻底删除被逻辑删除的用户
     * @param userIds 多个用户id
     * @return int
     */
    int deleteLogicDeleted(@Param("userIds") String userIds);
    /**
     * 批量删除角色与用户关系
     */
    void deleteBathRoleUserRelation(@Param("roleIdArray") String[] roleIdArray);

    /**
     * 批量删除角色与权限关系
     */
    void deleteBathRolePermissionRelation(@Param("roleIdArray") String[] roleIdArray);
}
